/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ik.pbs.Manejadores;

/**
 *
 * @author alexis
 */
import com.ik.pbs.Encapsulados.Anuncios;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;

public class ManejadorAnuncios {

    public static ManejadorAnuncios manager = null;
    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-DD");
    private SimpleDateFormat shf = new SimpleDateFormat("HH:mm:ss");

    public static ManejadorAnuncios getInstance() {
        if (manager == null) {
            manager = new ManejadorAnuncios();
        }

        return manager;
    }

    public void ManejadorAnuncios() {
    }

    public ArrayList<Anuncios> getBusquedaDeAnuncios(Connection con, String query) {
        ArrayList<Anuncios> arregloAnuncios = new ArrayList();

        ResultSet rd = null;
        PreparedStatement state;

        try {
            state = con.prepareCall(query);
            rd = state.executeQuery();

            while (rd.next()) {
                Anuncios Anuncios = new Anuncios();
                Anuncios.setId(rd.getInt("id"));
                Anuncios.setNombre(rd.getString("nombre"));
                Anuncios.setArtista(rd.getString("artistas"));
                Anuncios.setDescripcion(rd.getString("descripcion"));
                Anuncios.setFecha(rd.getString("fecha"));
                Anuncios.setHora(rd.getString("hora"));
                Anuncios.setFoto(rd.getString("foto"));
                Anuncios.setUbicacion(ManejadorUbicacion.getInstance().getUbicacion(con, rd.getInt("ubicacion")));
                Anuncios.setCategorias_id(ManejadorCategorias.getInstance().getCategoria(con, rd.getInt("categorias_id")));
                Anuncios.setUsuarios_id(ManejadorUsuarios.getInstance().getUsuario(con, rd.getInt("usuarios_id")));
                Anuncios.setPuntosPositivos(rd.getInt("puntospositivos"));
                Anuncios.setPuntosNegativos(rd.getInt("puntosnegativos"));
                Anuncios.setEstados_id(ManejadorEstados.getInstance().getEstado(con, rd.getInt("estados_id")));

                arregloAnuncios.add(Anuncios);
            }

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }

        return arregloAnuncios;
    }

    public ArrayList<Anuncios> getUltimosAnuncios(Connection con, int limite) {
        ArrayList<Anuncios> arregloAnuncios = new ArrayList();

        ResultSet rd = null;
        PreparedStatement state;

        String query = "select * from anuncios where fecha >= curdate() and estados_id = 3 order by fecha limit ?";

        try {
            state = con.prepareCall(query);
            state.setInt(1, limite);
            rd = state.executeQuery();

            while (rd.next()) {
                Anuncios Anuncios = new Anuncios();
                Anuncios.setId(rd.getInt("id"));
                Anuncios.setNombre(rd.getString("nombre"));
                Anuncios.setArtista(rd.getString("artistas"));
                Anuncios.setDescripcion(rd.getString("descripcion"));
                Anuncios.setFecha(rd.getString("fecha"));
                Anuncios.setHora(rd.getString("hora"));
                Anuncios.setFoto(rd.getString("foto"));
                Anuncios.setUbicacion(ManejadorUbicacion.getInstance().getUbicacion(con, rd.getInt("ubicacion")));
                Anuncios.setCategorias_id(ManejadorCategorias.getInstance().getCategoria(con, rd.getInt("categorias_id")));
                Anuncios.setUsuarios_id(ManejadorUsuarios.getInstance().getUsuario(con, rd.getInt("usuarios_id")));
                Anuncios.setPuntosPositivos(rd.getInt("puntospositivos"));
                Anuncios.setPuntosNegativos(rd.getInt("puntosnegativos"));
                Anuncios.setEstados_id(ManejadorEstados.getInstance().getEstado(con, rd.getInt("estados_id")));

                arregloAnuncios.add(Anuncios);
            }

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }

        return arregloAnuncios;
    }

    public ArrayList<Anuncios> getAnunciosTop10(Connection con) {
        ArrayList<Anuncios> arregloAnuncios = new ArrayList();

        ResultSet rd = null;
        PreparedStatement state;

        String query = "select * from anuncios where fecha >= curdate() and estados_id = 3 order by (puntospositivos-puntosnegativos) DESC limit 10";

        try {
            state = con.prepareCall(query);
            rd = state.executeQuery();

            while (rd.next()) {
                Anuncios Anuncios = new Anuncios();
                Anuncios.setId(rd.getInt("id"));
                Anuncios.setNombre(rd.getString("nombre"));
                Anuncios.setArtista(rd.getString("artistas"));
                Anuncios.setDescripcion(rd.getString("descripcion"));
                Anuncios.setFecha(rd.getString("fecha"));
                Anuncios.setHora(rd.getString("hora"));
                Anuncios.setFoto(rd.getString("foto"));
                Anuncios.setUbicacion(ManejadorUbicacion.getInstance().getUbicacion(con, rd.getInt("ubicacion")));
                Anuncios.setCategorias_id(ManejadorCategorias.getInstance().getCategoria(con, rd.getInt("categorias_id")));
                Anuncios.setUsuarios_id(ManejadorUsuarios.getInstance().getUsuario(con, rd.getInt("usuarios_id")));
                Anuncios.setPuntosPositivos(rd.getInt("puntospositivos"));
                Anuncios.setPuntosNegativos(rd.getInt("puntosnegativos"));
                Anuncios.setEstados_id(ManejadorEstados.getInstance().getEstado(con, rd.getInt("estados_id")));

                arregloAnuncios.add(Anuncios);
            }

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }

        return arregloAnuncios;
    }

    public ArrayList<Anuncios> getAnuncios(Connection con, int usuario) {
        ArrayList<Anuncios> arregloAnuncios = new ArrayList();

        ResultSet rd = null;
        PreparedStatement state;

        String query = "select * from anuncios where usuarios_id = ? order by id";

        try {
            state = con.prepareCall(query);
            state.setInt(1, usuario);
            rd = state.executeQuery();

            while (rd.next()) {
                Anuncios Anuncios = new Anuncios();
                Anuncios.setId(rd.getInt("id"));
                Anuncios.setNombre(rd.getString("nombre"));
                Anuncios.setArtista(rd.getString("artistas"));
                Anuncios.setDescripcion(rd.getString("descripcion"));
                Anuncios.setFecha(rd.getString("fecha"));
                Anuncios.setHora(rd.getString("hora"));
                Anuncios.setFoto(rd.getString("foto"));
                Anuncios.setUbicacion(ManejadorUbicacion.getInstance().getUbicacion(con, rd.getInt("ubicacion")));
                Anuncios.setCategorias_id(ManejadorCategorias.getInstance().getCategoria(con, rd.getInt("categorias_id")));
                Anuncios.setUsuarios_id(ManejadorUsuarios.getInstance().getUsuario(con, rd.getInt("usuarios_id")));
                Anuncios.setPuntosPositivos(rd.getInt("puntospositivos"));
                Anuncios.setPuntosNegativos(rd.getInt("puntosnegativos"));
                Anuncios.setEstados_id(ManejadorEstados.getInstance().getEstado(con, rd.getInt("estados_id")));

                arregloAnuncios.add(Anuncios);
            }

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }

        return arregloAnuncios;
    }

    public ArrayList<Anuncios> getAnuncios(Connection con) {
        ArrayList<Anuncios> arregloAnuncios = new ArrayList();

        ResultSet rd = null;
        PreparedStatement state;

        String query = "select * from anuncios order by id";

        try {
            state = con.prepareCall(query);
            rd = state.executeQuery();

            while (rd.next()) {
                Anuncios Anuncios = new Anuncios();
                Anuncios.setId(rd.getInt("id"));
                Anuncios.setNombre(rd.getString("nombre"));
                Anuncios.setArtista(rd.getString("artistas"));
                Anuncios.setDescripcion(rd.getString("descripcion"));
                Anuncios.setFecha(rd.getString("fecha"));
                Anuncios.setHora(rd.getString("hora"));
                Anuncios.setFoto(rd.getString("foto"));
                Anuncios.setUbicacion(ManejadorUbicacion.getInstance().getUbicacion(con, rd.getInt("ubicacion")));
                Anuncios.setCategorias_id(ManejadorCategorias.getInstance().getCategoria(con, rd.getInt("categorias_id")));
                Anuncios.setUsuarios_id(ManejadorUsuarios.getInstance().getUsuario(con, rd.getInt("usuarios_id")));
                Anuncios.setPuntosPositivos(rd.getInt("puntospositivos"));
                Anuncios.setPuntosNegativos(rd.getInt("puntosnegativos"));
                Anuncios.setEstados_id(ManejadorEstados.getInstance().getEstado(con, rd.getInt("estados_id")));

                arregloAnuncios.add(Anuncios);
            }

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }

        return arregloAnuncios;
    }

    public ArrayList<Anuncios> getAnunciosPendientes(Connection con, int usuario) {
        ArrayList<Anuncios> arregloAnuncios = new ArrayList();

        ResultSet rd = null;
        PreparedStatement state;

        String query = "select * from anuncios where estados_id=? and usuarios_id=?  order by id";

        try {
            state = con.prepareCall(query);
            state.setInt(1, 1);
            state.setInt(2, usuario);
            rd = state.executeQuery();

            while (rd.next()) {
                Anuncios Anuncios = new Anuncios();
                Anuncios.setId(rd.getInt("id"));
                Anuncios.setNombre(rd.getString("nombre"));
                Anuncios.setArtista(rd.getString("artistas"));
                Anuncios.setDescripcion(rd.getString("descripcion"));
                Anuncios.setFecha(rd.getString("fecha"));
                Anuncios.setHora(rd.getString("hora"));
                Anuncios.setFoto(rd.getString("foto"));
                Anuncios.setUbicacion(ManejadorUbicacion.getInstance().getUbicacion(con, rd.getInt("ubicacion")));
                Anuncios.setCategorias_id(ManejadorCategorias.getInstance().getCategoria(con, rd.getInt("categorias_id")));
                Anuncios.setUsuarios_id(ManejadorUsuarios.getInstance().getUsuario(con, rd.getInt("usuarios_id")));
                Anuncios.setPuntosPositivos(rd.getInt("puntospositivos"));
                Anuncios.setPuntosNegativos(rd.getInt("puntosnegativos"));
                Anuncios.setEstados_id(ManejadorEstados.getInstance().getEstado(con, rd.getInt("estados_id")));

                arregloAnuncios.add(Anuncios);
            }

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }

        return arregloAnuncios;
    }

    public ArrayList<Anuncios> getAnunciosPendientes(Connection con) {
        ArrayList<Anuncios> arregloAnuncios = new ArrayList();

        ResultSet rd = null;
        PreparedStatement state;

        String query = "select * from anuncios where estados_id=?  order by id";

        try {
            state = con.prepareCall(query);
            state.setInt(1, 1);
            rd = state.executeQuery();

            while (rd.next()) {
                Anuncios Anuncios = new Anuncios();
                Anuncios.setId(rd.getInt("id"));
                Anuncios.setNombre(rd.getString("nombre"));
                Anuncios.setArtista(rd.getString("artistas"));
                Anuncios.setDescripcion(rd.getString("descripcion"));
                Anuncios.setFecha(rd.getString("fecha"));
                Anuncios.setHora(rd.getString("hora"));
                Anuncios.setFoto(rd.getString("foto"));
                Anuncios.setUbicacion(ManejadorUbicacion.getInstance().getUbicacion(con, rd.getInt("ubicacion")));
                Anuncios.setCategorias_id(ManejadorCategorias.getInstance().getCategoria(con, rd.getInt("categorias_id")));
                Anuncios.setUsuarios_id(ManejadorUsuarios.getInstance().getUsuario(con, rd.getInt("usuarios_id")));
                Anuncios.setPuntosPositivos(rd.getInt("puntospositivos"));
                Anuncios.setPuntosNegativos(rd.getInt("puntosnegativos"));
                Anuncios.setEstados_id(ManejadorEstados.getInstance().getEstado(con, rd.getInt("estados_id")));

                arregloAnuncios.add(Anuncios);
            }

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }

        return arregloAnuncios;
    }

    public ArrayList<Anuncios> getAnunciosAprobados(Connection con, int usuario) {
        ArrayList<Anuncios> arregloAnuncios = new ArrayList();

        ResultSet rd = null;
        PreparedStatement state;

        String query = "select * from anuncios where estados_id=? and usuarios_id=?  order by id";

        try {
            state = con.prepareCall(query);
            state.setInt(1, 3);
            state.setInt(2, usuario);
            rd = state.executeQuery();

            while (rd.next()) {
                Anuncios Anuncios = new Anuncios();
                Anuncios.setId(rd.getInt("id"));
                Anuncios.setNombre(rd.getString("nombre"));
                Anuncios.setArtista(rd.getString("artistas"));
                Anuncios.setDescripcion(rd.getString("descripcion"));
                Anuncios.setFecha(rd.getString("fecha"));
                Anuncios.setHora(rd.getString("hora"));
                Anuncios.setFoto(rd.getString("foto"));
                Anuncios.setUbicacion(ManejadorUbicacion.getInstance().getUbicacion(con, rd.getInt("ubicacion")));
                Anuncios.setCategorias_id(ManejadorCategorias.getInstance().getCategoria(con, rd.getInt("categorias_id")));
                Anuncios.setUsuarios_id(ManejadorUsuarios.getInstance().getUsuario(con, rd.getInt("usuarios_id")));
                Anuncios.setPuntosPositivos(rd.getInt("puntospositivos"));
                Anuncios.setPuntosNegativos(rd.getInt("puntosnegativos"));
                Anuncios.setEstados_id(ManejadorEstados.getInstance().getEstado(con, rd.getInt("estados_id")));

                arregloAnuncios.add(Anuncios);
            }

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }

        return arregloAnuncios;
    }

    public ArrayList<Anuncios> getAnunciosAprobados(Connection con) {
        ArrayList<Anuncios> arregloAnuncios = new ArrayList();

        ResultSet rd = null;
        PreparedStatement state;

        String query = "select * from anuncios where estados_id=?  order by id";

        try {
            state = con.prepareCall(query);
            state.setInt(1, 3);
            rd = state.executeQuery();

            while (rd.next()) {
                Anuncios Anuncios = new Anuncios();
                Anuncios.setId(rd.getInt("id"));
                Anuncios.setNombre(rd.getString("nombre"));
                Anuncios.setArtista(rd.getString("artistas"));
                Anuncios.setDescripcion(rd.getString("descripcion"));
                Anuncios.setFecha(rd.getString("fecha"));
                Anuncios.setHora(rd.getString("hora"));
                Anuncios.setFoto(rd.getString("foto"));
                Anuncios.setUbicacion(ManejadorUbicacion.getInstance().getUbicacion(con, rd.getInt("ubicacion")));
                Anuncios.setCategorias_id(ManejadorCategorias.getInstance().getCategoria(con, rd.getInt("categorias_id")));
                Anuncios.setUsuarios_id(ManejadorUsuarios.getInstance().getUsuario(con, rd.getInt("usuarios_id")));
                Anuncios.setPuntosPositivos(rd.getInt("puntospositivos"));
                Anuncios.setPuntosNegativos(rd.getInt("puntosnegativos"));
                Anuncios.setEstados_id(ManejadorEstados.getInstance().getEstado(con, rd.getInt("estados_id")));

                arregloAnuncios.add(Anuncios);
            }

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }

        return arregloAnuncios;
    }

    public ArrayList<Anuncios> getAnunciosHoy(Connection con, int usuario) {
        ArrayList<Anuncios> arregloAnuncios = new ArrayList();

        ResultSet rd = null;
        PreparedStatement state;

        String query = "select * from anuncios where estados_id=? and fecha = curdate() and usuarios_id=?  order by id";

        try {
            state = con.prepareCall(query);
            state.setInt(1, 3);
            state.setInt(2, usuario);
            rd = state.executeQuery();

            while (rd.next()) {
                Anuncios Anuncios = new Anuncios();
                Anuncios.setId(rd.getInt("id"));
                Anuncios.setNombre(rd.getString("nombre"));
                Anuncios.setArtista(rd.getString("artistas"));
                Anuncios.setDescripcion(rd.getString("descripcion"));
                Anuncios.setFecha(rd.getString("fecha"));
                Anuncios.setHora(rd.getString("hora"));
                Anuncios.setFoto(rd.getString("foto"));
                Anuncios.setUbicacion(ManejadorUbicacion.getInstance().getUbicacion(con, rd.getInt("ubicacion")));
                Anuncios.setCategorias_id(ManejadorCategorias.getInstance().getCategoria(con, rd.getInt("categorias_id")));
                Anuncios.setUsuarios_id(ManejadorUsuarios.getInstance().getUsuario(con, rd.getInt("usuarios_id")));
                Anuncios.setPuntosPositivos(rd.getInt("puntospositivos"));
                Anuncios.setPuntosNegativos(rd.getInt("puntosnegativos"));
                Anuncios.setEstados_id(ManejadorEstados.getInstance().getEstado(con, rd.getInt("estados_id")));

                arregloAnuncios.add(Anuncios);
            }

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }

        return arregloAnuncios;
    }

    public ArrayList<Anuncios> getAnunciosHoy(Connection con) {
        ArrayList<Anuncios> arregloAnuncios = new ArrayList();

        ResultSet rd = null;
        PreparedStatement state;

        String query = "select * from anuncios where estados_id=? and fecha = curdate()  order by id";

        try {
            state = con.prepareCall(query);
            state.setInt(1, 3);
            rd = state.executeQuery();

            while (rd.next()) {
                Anuncios Anuncios = new Anuncios();
                Anuncios.setId(rd.getInt("id"));
                Anuncios.setNombre(rd.getString("nombre"));
                Anuncios.setArtista(rd.getString("artistas"));
                Anuncios.setDescripcion(rd.getString("descripcion"));
                Anuncios.setFecha(rd.getString("fecha"));
                Anuncios.setHora(rd.getString("hora"));
                Anuncios.setFoto(rd.getString("foto"));
                Anuncios.setUbicacion(ManejadorUbicacion.getInstance().getUbicacion(con, rd.getInt("ubicacion")));
                Anuncios.setCategorias_id(ManejadorCategorias.getInstance().getCategoria(con, rd.getInt("categorias_id")));
                Anuncios.setUsuarios_id(ManejadorUsuarios.getInstance().getUsuario(con, rd.getInt("usuarios_id")));
                Anuncios.setPuntosPositivos(rd.getInt("puntospositivos"));
                Anuncios.setPuntosNegativos(rd.getInt("puntosnegativos"));
                Anuncios.setEstados_id(ManejadorEstados.getInstance().getEstado(con, rd.getInt("estados_id")));

                arregloAnuncios.add(Anuncios);
            }

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }

        return arregloAnuncios;
    }

    public ArrayList<Anuncios> getAnunciosVigentes(Connection con, int usuario) {
        ArrayList<Anuncios> arregloAnuncios = new ArrayList();

        ResultSet rd = null;
        PreparedStatement state;

        String query = "select * from anuncios where estados_id=? and fecha >= curdate() and usuarios_id=?  order by id";

        try {
            state = con.prepareCall(query);
            state.setInt(1, 3);
            state.setInt(2, usuario);
            rd = state.executeQuery();

            while (rd.next()) {
                Anuncios Anuncios = new Anuncios();
                Anuncios.setId(rd.getInt("id"));
                Anuncios.setNombre(rd.getString("nombre"));
                Anuncios.setArtista(rd.getString("artistas"));
                Anuncios.setDescripcion(rd.getString("descripcion"));
                Anuncios.setFecha(rd.getString("fecha"));
                Anuncios.setHora(rd.getString("hora"));
                Anuncios.setFoto(rd.getString("foto"));
                Anuncios.setUbicacion(ManejadorUbicacion.getInstance().getUbicacion(con, rd.getInt("ubicacion")));
                Anuncios.setCategorias_id(ManejadorCategorias.getInstance().getCategoria(con, rd.getInt("categorias_id")));
                Anuncios.setUsuarios_id(ManejadorUsuarios.getInstance().getUsuario(con, rd.getInt("usuarios_id")));
                Anuncios.setPuntosPositivos(rd.getInt("puntospositivos"));
                Anuncios.setPuntosNegativos(rd.getInt("puntosnegativos"));
                Anuncios.setEstados_id(ManejadorEstados.getInstance().getEstado(con, rd.getInt("estados_id")));

                arregloAnuncios.add(Anuncios);
            }

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }

        return arregloAnuncios;
    }

    public ArrayList<Anuncios> getAnunciosVigentes(Connection con) {
        ArrayList<Anuncios> arregloAnuncios = new ArrayList();

        ResultSet rd = null;
        PreparedStatement state;

        String query = "select * from anuncios where estados_id=? and fecha >= curdate()  order by id";

        try {
            state = con.prepareCall(query);
            state.setInt(1, 3);
            rd = state.executeQuery();

            while (rd.next()) {
                Anuncios Anuncios = new Anuncios();
                Anuncios.setId(rd.getInt("id"));
                Anuncios.setNombre(rd.getString("nombre"));
                Anuncios.setArtista(rd.getString("artistas"));
                Anuncios.setDescripcion(rd.getString("descripcion"));
                Anuncios.setFecha(rd.getString("fecha"));
                Anuncios.setHora(rd.getString("hora"));
                Anuncios.setFoto(rd.getString("foto"));
                Anuncios.setUbicacion(ManejadorUbicacion.getInstance().getUbicacion(con, rd.getInt("ubicacion")));
                Anuncios.setCategorias_id(ManejadorCategorias.getInstance().getCategoria(con, rd.getInt("categorias_id")));
                Anuncios.setUsuarios_id(ManejadorUsuarios.getInstance().getUsuario(con, rd.getInt("usuarios_id")));
                Anuncios.setPuntosPositivos(rd.getInt("puntospositivos"));
                Anuncios.setPuntosNegativos(rd.getInt("puntosnegativos"));
                Anuncios.setEstados_id(ManejadorEstados.getInstance().getEstado(con, rd.getInt("estados_id")));

                arregloAnuncios.add(Anuncios);
            }

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }

        return arregloAnuncios;
    }

    public ArrayList<Anuncios> getAnunciosRechazados(Connection con, int usuario) {
        ArrayList<Anuncios> arregloAnuncios = new ArrayList();

        ResultSet rd = null;
        PreparedStatement state;

        String query = "select * from anuncios where estados_id=? and usuarios_id=?  order by id";

        try {
            state = con.prepareCall(query);
            state.setInt(1, 2);
            state.setInt(2, usuario);
            rd = state.executeQuery();

            while (rd.next()) {
                Anuncios Anuncios = new Anuncios();
                Anuncios.setId(rd.getInt("id"));
                Anuncios.setNombre(rd.getString("nombre"));
                Anuncios.setArtista(rd.getString("artistas"));
                Anuncios.setDescripcion(rd.getString("descripcion"));
                Anuncios.setFecha(rd.getString("fecha"));
                Anuncios.setHora(rd.getString("hora"));
                Anuncios.setFoto(rd.getString("foto"));
                Anuncios.setUbicacion(ManejadorUbicacion.getInstance().getUbicacion(con, rd.getInt("ubicacion")));
                Anuncios.setCategorias_id(ManejadorCategorias.getInstance().getCategoria(con, rd.getInt("categorias_id")));
                Anuncios.setUsuarios_id(ManejadorUsuarios.getInstance().getUsuario(con, rd.getInt("usuarios_id")));
                Anuncios.setPuntosPositivos(rd.getInt("puntospositivos"));
                Anuncios.setPuntosNegativos(rd.getInt("puntosnegativos"));
                Anuncios.setEstados_id(ManejadorEstados.getInstance().getEstado(con, rd.getInt("estados_id")));

                arregloAnuncios.add(Anuncios);
            }

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }

        return arregloAnuncios;
    }

    public ArrayList<Anuncios> getAnunciosRechazados(Connection con) {
        ArrayList<Anuncios> arregloAnuncios = new ArrayList();

        ResultSet rd = null;
        PreparedStatement state;

        String query = "select * from anuncios where estados_id=?  order by id";

        try {
            state = con.prepareCall(query);
            state.setInt(1, 2);
            rd = state.executeQuery();

            while (rd.next()) {
                Anuncios Anuncios = new Anuncios();
                Anuncios.setId(rd.getInt("id"));
                Anuncios.setNombre(rd.getString("nombre"));
                Anuncios.setArtista(rd.getString("artistas"));
                Anuncios.setDescripcion(rd.getString("descripcion"));
                Anuncios.setFecha(rd.getString("fecha"));
                Anuncios.setHora(rd.getString("hora"));
                Anuncios.setFoto(rd.getString("foto"));
                Anuncios.setUbicacion(ManejadorUbicacion.getInstance().getUbicacion(con, rd.getInt("ubicacion")));
                Anuncios.setCategorias_id(ManejadorCategorias.getInstance().getCategoria(con, rd.getInt("categorias_id")));
                Anuncios.setUsuarios_id(ManejadorUsuarios.getInstance().getUsuario(con, rd.getInt("usuarios_id")));
                Anuncios.setPuntosPositivos(rd.getInt("puntospositivos"));
                Anuncios.setPuntosNegativos(rd.getInt("puntosnegativos"));
                Anuncios.setEstados_id(ManejadorEstados.getInstance().getEstado(con, rd.getInt("estados_id")));

                arregloAnuncios.add(Anuncios);
            }

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }

        return arregloAnuncios;
    }

    public Anuncios getAnuncio(Connection con, int codigo) {
        Anuncios Anuncios = null;

        ResultSet rd = null;
        PreparedStatement state;

        String query = "select * from anuncios where id = ?  order by id";

        try {
            state = con.prepareCall(query);
            state.setInt(1, codigo);
            rd = state.executeQuery();

            while (rd.next()) {

                Anuncios = new Anuncios();
                Anuncios.setId(rd.getInt("id"));
                Anuncios.setNombre(rd.getString("nombre"));
                Anuncios.setArtista(rd.getString("artistas"));
                Anuncios.setDescripcion(rd.getString("descripcion"));
                Anuncios.setFecha(rd.getString("fecha"));
                Anuncios.setHora(rd.getString("hora"));
                Anuncios.setFoto(rd.getString("foto"));
                Anuncios.setUbicacion(ManejadorUbicacion.getInstance().getUbicacion(con, rd.getInt("ubicacion")));
                Anuncios.setCategorias_id(ManejadorCategorias.getInstance().getCategoria(con, rd.getInt("categorias_id")));
                Anuncios.setUsuarios_id(ManejadorUsuarios.getInstance().getUsuario(con, rd.getInt("usuarios_id")));
                Anuncios.setPuntosPositivos(rd.getInt("puntospositivos"));
                Anuncios.setPuntosNegativos(rd.getInt("puntosnegativos"));
                Anuncios.setEstados_id(ManejadorEstados.getInstance().getEstado(con, rd.getInt("estados_id")));
            }

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }

        return Anuncios;
    }

    public boolean insertarAnuncio(Connection con, Anuncios Anuncios) {
        PreparedStatement state;

        String query = "insert into anuncios values(?,?,?,?,?,?,?,?,?,?,?,?,?)";
        try {


            state = con.prepareStatement(query);
            state.setInt(1, Anuncios.getId());
            state.setString(2, Anuncios.getNombre());
            state.setString(3, Anuncios.getArtista());
            state.setString(4, Anuncios.getDescripcion());
            state.setString(5, Anuncios.getFecha());
            state.setString(6, Anuncios.getHora());
            state.setString(7, Anuncios.getFoto());
            state.setInt(8, Anuncios.getUbicacion().getId());
            state.setInt(9, Anuncios.getCategorias_id().getId());
            state.setInt(10, Anuncios.getUsuarios_id().getId());
            state.setInt(11, Anuncios.getPuntosPositivos());
            state.setInt(12, Anuncios.getPuntosNegativos());
            state.setInt(13, Anuncios.getEstados_id().getId());




            state.execute();
            return true;
        } catch (SQLException ex) {
            return actualizarAnuncio(con, Anuncios);
        }


    }

    public boolean actualizarAnuncio(Connection con, Anuncios Anuncios) {
        PreparedStatement state;

        String query = "update Anuncios set nombre = ?,artistas = ?,descripcion = ?,fecha = ?,hora = ?,foto = ?,ubicacion = ?,categorias_id = ?,usuarios_id = ?,puntospositivos = ?,puntosnegativos = ?,estados_id = ? where id = ?";

        try {
            state = con.prepareStatement(query);
            state.setInt(13, Anuncios.getId());
            state.setString(1, Anuncios.getNombre());
            state.setString(2, Anuncios.getArtista());
            state.setString(3, Anuncios.getDescripcion());
            state.setString(4, Anuncios.getFecha());
            state.setString(5, Anuncios.getHora());
            state.setString(6, Anuncios.getFoto());
            state.setInt(7, Anuncios.getUbicacion().getId());
            state.setInt(8, Anuncios.getCategorias_id().getId());
            state.setInt(9, Anuncios.getUsuarios_id().getId());
            state.setInt(10, Anuncios.getPuntosPositivos());
            state.setInt(11, Anuncios.getPuntosNegativos());
            state.setInt(12, Anuncios.getEstados_id().getId());

            state.execute();
            return true;

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
            return false;
        }


    }

    public boolean actualizarPuntajePositivoAnuncio(Connection con, Anuncios Anuncios) {
        PreparedStatement state;

        String query = "update anuncios set puntospositivos = puntospositivos+1 where id = ?";

        try {
            state = con.prepareStatement(query);
            state.setInt(1, Anuncios.getId());

            state.execute();
            return true;

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
            return false;
        }


    }

    public boolean actualizarPuntajeNegativoAnuncio(Connection con, Anuncios Anuncios) {
        PreparedStatement state;

        String query = "update anuncios set puntosnegativos = puntosnegativos+1 where id = ?";

        try {
            state = con.prepareStatement(query);
            state.setInt(1, Anuncios.getId());

            state.execute();
            return true;

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
            return false;
        }


    }

    public int getNext(Connection con) {
        try {
            ResultSet rd = null;
            PreparedStatement state;
            String query = "select max(id) as max from anuncios";

            state = con.prepareStatement(query);
            rd = state.executeQuery();

            if (!rd.next()) {
                return 1;
            } else {
                return (rd.getInt("max") + 1);
            }
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }
        return 0;
    }
}
